/* 
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
var map;
var tabpoint=new Array();
var dirService =  [];
var dirRenderer = [];
var dirOptions = [];
var optDef = {
    opt_anchor: [0, 0],
    opt_textColor: '#FF0000',
    opt_textSize: 12
};
var elevator = new google.maps.ElevationService();
var chart;
var polyline;
  
// Load the Visualization API and the columnchart package.
google.load("visualization", "1", {
    packages: ["columnchart"]
});


$(document).ready(function () {
  
    $("#statParcours").hide();
    $("#elevationGraph").hide();
    $("#modifier").hide();
    $("#marker").hide();
    
    var latlng = new google.maps.LatLng(latitude, longitude);

    $('#map_canvas').gmap3({
        action: 'init',
        options:{
            center: latlng,
            zoom: 15,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            navigationControl: true,
            scrollwheel: true,
            streetViewControl: true
        },
        events:{
            click:function(map,event){
                //                $('#modifier').attr("id","ajout");
                //                $('#ajout').val("Ajouter un point");
                var latlong = event.latLng;
                var lat = latlong.lat();
                var lng = latlong.lng();

                $("#lat").val(lat);
                $("#long").val(lng);
                            
                var fenetre='#marker';
                $masquer(fenetre);
            }
        }
    },{
        action:'addDirectionsRenderer',
        options:{
            preserveViewport: true,
            draggable: true,
            suppressMarkers : true
        }
    }
    );
        
    map= $("#map_canvas").gmap3('get');

    $listePoint();
    
    //Fonction lors de la soumission du formulaire
    $("#addMarker").submit(function() {
        if($("#point").val() == ""){
            alert("Veuillez indiquer le nom du point svp !!");
        }
        else{
            if($("#descr").val() == ""){
                alert("Vous devez remplir le champ de description");
            }
            else{
                $ajoutPoint();       
                alert('Création du marqueur ' + $("#point").val() + ' avec succès');
                
                $('#mask').hide();
                $('.window').hide();
                
                $vider_champ();                
            }
        }
        return false;
    }); 
    
    
    /* 
     * 
     * Fenetre de choix des parametres du parcours
     */
    $('#buttonParcours').click(function() {
         
        //On supprime la liste existante s'il y en a'
        $('.itemPointDep').remove();
         
        //On recupere les points de départs et on les ajoute a la combobox 
        $('tr[title=1]').each( function(){
            $('#pointDepart').append('<option class="itemPointDep" value="'+$(this).attr('id')+'">'+$(this).find('td').eq(0).html()+'</option>');
        });
    
        var fenetre='#creationParcours';
        $masquer(fenetre);
        
    });
    
    //Creation du slider
    $( "#slider-range" ).slider({
        range: true,
        min: 0,
        max: 300,
        values: [ 60, 120 ],
        slide: function( event, ui ) {
            $( "#temps" ).val(Math.floor(ui.values[ 0 ]/60) + " h "+ Math.floor(ui.values[0]%(60)) +" min - " + Math.floor(ui.values[1]/60) + " h "+ Math.floor(ui.values[1]%(60))+" min");
        }
    });
    
    //Gestion de la valeur du slider
    $( "#temps" ).val(Math.floor($( "#slider-range" ).slider( "values", 0 )/60) + " h " + Math.floor($( "#slider-range" ).slider( "values", 0 )%(60)) +
        " min - " + Math.floor($( "#slider-range" ).slider( "values", 1 )/60) + " h " + Math.floor($( "#slider-range" ).slider( "values",1)%(60))+" min");


    //Fonction lors de la soumission du formulaire
    $("#addParcours").submit(function() {
        //Verification qu'il existe un point de depart'
        if($("#pointDepart").val() == null){
            alert("Veuillez selectionner un point de départ");
        }
        else{
            //Recuperation des variables
            var depart=$("#pointDepart").val();
            var tempsMin=$("#slider-range").slider("values",0);
            var tempsMax=$("#slider-range").slider("values",1);
            var difficulte=new Array();
            difficulte["enfant1"]=$("#enfant1").attr('checked');
            difficulte["enfant2"]=$("#enfant2").attr('checked');
            difficulte["enfant3"]=$("#enfant3").attr('checked');
            difficulte["mobiliteR"]=$("#mobiliteR").attr('checked');
            
            //Génération de parcours
            $tracerParcours(depart,tempsMin,tempsMax,difficulte);
            $("#statParcours").show();
            $("#elevationGraph").hide();
            
            $demasquer();
    
        }
        return false;
    }); 
    
    //Fonction appelé lors du clic sur vider les champs
    $("#clear").click(function(){
        $vider_champ();
    });
    
    //Fonction appelé lors du clic sur vider les champs
    $("#annuler").live('click',function(){
        $(".modificationPoint").remove();
        $demasquer();
    });
              
});

//Fonction appelé pour enlever le masque de l'ecran'
function $masquer(fenetre){
    //Get the screen height and width
    var maskHeight = $(document).height();
    var maskWidth = $(window).width();
        
    //Set heigth and width to mask to fill up the whole screen
    $('#mask').css({
        'width':maskWidth,
        'height':maskHeight
    });
                
    //Effet de transition               
    $('#mask').fadeIn(1000);    
    $('#mask').fadeTo("slow",0.8);      
        
    //Recuperation des dimensions de l'ecran'
    var winH = $(window).height();
    var winW = $(window).width();
    
    $(fenetre).css('top',  winH/2-$(fenetre).height()/2);
    $(fenetre).css('left', winW/2-$(fenetre).width()/2);
    $(fenetre).fadeIn(2000); 
}

//Fonction appelé pour enlever le masque de l'ecran'
function $demasquer(){
    $('#mask').hide();
    $('.window').hide();
}

/*
 * Fonction qui permet de réinitialiser les champ du formulaire
 */
function $vider_champ(){
    
    //on vide les champs du formulaire après l'ajout du marker
    $("#lat").val("");
    $("#long").val("");
    $("#point").val("");
    $("#descr").val("");
    $("#depart").attr('checked','')

    return false;
}

/*
 * Fonction qui permet d'ajouter un point à la liste
 */
function $ajoutPoint(){

    var $idPoint;
    var $nomPoint = $("#point").val();
    var $lat=$("#lat").val();
    var $long=$("#long").val();    
    var $infoPoint = $("#descr").val();
    var $estPointDepart;
    if($("#depart").is(':checked')){
        $estPointDepart=1;
    }else{
        $estPointDepart=0;
    }

    $.ajax({
        type: 'POST',
        url: 'gestionPoint.php',
        data:"action=ajouterPoint&idSite="+id+"&nomPoint="+$nomPoint+"&latitude="+$lat+"&longitude="+$long+"&infoPoint="+$infoPoint+"&depart="+$estPointDepart,
        success: function (data, textStatus, jqXHR) {
            
            $idPoint=data;
            
            //Ajout des points à la liste
            $('#list').append("<tr class='infoPoint' title='"+$estPointDepart+"' id='"+$idPoint+"'><td><a href='#' id='lien"+$idPoint+"'>"+$nomPoint+"</a></td><td><a href='#' id='Modif"+$idPoint+"'><img src='./img/modifier.png' alt='modifier'/></a></td><td><a href='#' id='Suppr" +$idPoint+ "'><img src='./img/supprimer.png' alt='supprimer'/></a></td></tr>");
            
            tabpoint[$idPoint]=new Array();
            tabpoint[$idPoint]["latitude"]=$lat;
            tabpoint[$idPoint]["longitude"]=$long;
            
            //Appel de la fonction de création des markers
            $creerMarker($idPoint,$lat,$long,$estPointDepart,$infoPoint);
        },
        error: function(jqXHR, textStatus, errorThrown) {
        }
    }); 
            
    //alert('Ajout du point a la base');
    return false;
}

/*
 * Fonction qui permet d'afficher la liste de tous les points de la base de données
 */
function $listePoint(){
    
    //Requete ajax permettant de recuperer les points de la base de données
    $.ajax({
        type: 'POST',
        url: 'gestionPoint.php',
        data:"action=listePoint&idSite="+id,
        dataType:'json',
        success: function(data, textStatus, jqXHR) {
            
            $.each(data, function(key, val) {
                
                //Ajout des points à la liste
                $('#list').append("<tr class='infoPoint' title='"+val.depart+"' id='"+val.idPoint+"'><td><a href='#' id='lien"+val.idPoint+"'>"+val.nomPoint+"</a></td><td><a href='#' id='Modif"+val.idPoint+"'><img src='./img/modifier.png' alt='modifier'/></a></td><td><a href='#' id='Suppr" +val.idPoint+ "'><img src='./img/supprimer.png' alt='supprimer'/></a></td></tr>");
                
                tabpoint[val.idPoint]=new Array();
                tabpoint[val.idPoint]["latitude"]=val.latitude;
                tabpoint[val.idPoint]["longitude"]=val.longitude;
                
                //Appel de la fonction de création des markers
                $creerMarker(val.idPoint,val.latitude,val.longitude,val.depart,val.infoPoint);
            });
        },
        error: function(jqXHR, textStatus, errorThrown) {
        }
    });   
    return false;
}

/*
 * Fonction de suprression d'un point
 */
function $supprimerPoint($idPoint){
 
    //Fenêtre de confirmation de suppression du site
    if(confirm('Etes vous sur de vouloir définitivement supprimer ce point?')){
    
        // Envoi des parametres au fichier gestionSite.php qui va supprimer le site dans la base
        $.ajax({
            type: 'POST',
            url: 'gestionPoint.php',
            data:"action=supprimerPoint&idPoint="+$idPoint,
            success: function(data, textStatus, jqXHR) {
                //alert(data);
                $("#"+$idPoint).remove();

            },
            error: function(jqXHR, textStatus, errorThrown) {
            }
        });
        
        delete tabpoint.$idPoint;       
    }
    
    return false;
}

/*
 *Fonction qui modifie un point
 */
function $modifierPoint($idPoint){

    var $nomPoint = $("#point").val();
    var $lat=$("#lat").val();
    var $long=$("#long").val();
    var $infoPoint = $("#descr").val();
    var $estPointDepart;
    if($("#depart").is(':checked')){
        $estPointDepart=1;
    }else{
        $estPointDepart=0;
    }

    // Envoi des parametres au fichier gestionSite.php qui va supprimer le site dans la base
    $.ajax({
        type: 'POST',
        url: 'gestionPoint.php',
        data:"action=modifierPoint&idPoint="+$idPoint+"&nomPoint="+$nomPoint+"&latitude="+$lat+"&longitude="+$long+"&infoPoint="+$infoPoint+"&depart="+$estPointDepart,
        success: function(data, textStatus, jqXHR) {
            //alert(data);
            //alert("Le point a ete modifie");
            $('#'+$idPoint).attr('title',$estPointDepart);            
            $('#'+$idPoint).find('td').eq(0).html("<a href='#' id='lien"+$idPoint+"'>"+$nomPoint+"</a>");
            
            tabpoint[$idPoint]["latitude"]=$lat;
            tabpoint[$idPoint]["longitude"]=$long;
               
        },
        error: function(jqXHR, textStatus, errorThrown) {
        }
    });

    return $estPointDepart;
}

/*
 * Fonction qui recuperer un point
 */
function $recupPoint($idPoint){
        
    //Requete ajax permettant de recuperer les points de la base de données
    $.ajax({
        type: 'POST',
        url: 'gestionPoint.php',
        data:"action=recupPoint&idPoint="+$idPoint,
        dataType:'json',
        success: function(data, textStatus, jqXHR) {
            $.each(data, function(key, val) {
                
                $('#point').val(val.nomPoint);
                $('#descr').val(val.infoPoint);
            
                if(val.depart == 1){
                    $("#depart").attr('checked','checked')
                                
                }else{
                    $("#depart").attr('checked','')
                }
            });
        },
        error: function(jqXHR, textStatus, errorThrown) {
        }
    });
    return false;
}


/*
 * Fonction qui crée un marker pour chaque point
 */
function $creerMarker($idPoint,lat,lon,dep, $infos){ 

    var icon;

    if(dep==0){
        icon=null;
    }else{
        icon='./img/beachflag.png';
    }

    //Création du marker correspondant
    $("#map_canvas").gmap3({
        action: 'addMarker',
        lat: lat,
        lng: lon,
        marker:{
            callback: function(marker) {
                
                //Lors d'un clic sur le lien correspondant au marker'
                $("#lien"+$idPoint).live('click', function(){
                    //Centrage de la carte sur le marker
                    $("#map_canvas").gmap3({
                        action:'panTo',
                        args:[marker.position]
                    });
                });
                
                //Creation d'une fonction pour le lien 'supprimer' correspondant au marker'
                $("#Suppr"+$idPoint).click(function(){
                    marker.setMap(null);
                    $supprimerPoint($idPoint);
                });
                
                //Creation d'une fonction pour le lien 'modifier' correspondant au marker'
                $("#Modif"+$idPoint).live('click',function(){

                    //Modification de l'image du marker'
                    marker.setIcon("./img/blue_marker.png");
                    
                    //Affichage des informations du point
                    $recupPoint($idPoint);
                                                         
                    $("#map_canvas").gmap3({
                        action:'panTo',
                        args:[marker.position]
                    });
                    
                    var latlong =  marker.getPosition();
                    $("#lat").val(latlong.lat());
                    $("#long").val(latlong.lng());
                            
                    var fenetre='#marker';
                    $masquer(fenetre);
            
                    //Modification du bouton
                    $("#ajout").hide();
                    $("#validationPoint").append('<input type="button" class="modificationPoint" id="modification'+$idPoint+'" value="Modifier le point"/>');                   
   
                });
                    
                //Fonction lors d'un click sur modifier'
                $("#modification"+$idPoint).live('click',function(){
                    if($("#point").val() == ""){
                        alert("Veuillez indiquer le nom du point svp !!");
                    }
                    else{
                        if($("#descr").val() == ""){
                            alert("Veuillez remplir le champ de description");
                        }
                        else{
                            var estDepart=$modifierPoint($idPoint);
                                                    
                            if(estDepart==0){
                                icon=null;
                            }else{
                                icon='./img/beachflag.png';
                            }
                            
                            marker.setIcon(icon);
                            $vider_champ();
                            
                            $("#modification"+$idPoint).remove();    
                            $("#ajout").show();
                            
                            $demasquer();
                        }
                    }
                    return false;                 
                });
            },
            options:{
                draggable: true,
                icon: icon
            },
              events:{
                click: function(marker,event){
                    var infowindow = $("#map_canvas").gmap3({
                        action:'get',
                        name:'infowindow'
                    });
                    if (infowindow){
                        infowindow.open(map, marker);
                        infowindow.setContent($infos +'<br /><a  href="#" id="addActivite">Ajouter une activité</a>');
                    } else {
                        $("#map_canvas").gmap3({
                            action:'addinfowindow',
                            anchor:marker,
                            options:{
                                content: $infos
                            }
                        });
                    }  
                    $("#addActivite").click(function(){
                        var latlongActivite = event.latLng;
                        var latActivite = latlongActivite.lat();
                        var lngActivite  = latlongActivite.lng();
                        $ajouterActivite(latActivite, lngActivite);

                    });
                },
                dragend: function(marker){          
                  
                    //Modification de l'image du marker'
                    marker.setIcon("./img/blue_marker.png");
                  
                    //Affichage des informations du point
                    $recupPoint($idPoint);
                    
                    $("#map_canvas").gmap3({
                        action:'panTo',
                        args:[marker.position]
                    });
                    
                    var latlong =  marker.getPosition();
                    $("#lat").val(latlong.lat());
                    $("#long").val(latlong.lng());
                                        
                    var fenetre='#marker';
                    $masquer(fenetre); 
            
                    //Modification du bouton
                    $("#ajout").hide();
                    $("#validationPoint").append('<input type="button" class="modificationPoint" id="modification'+$idPoint+'" value="Modifier le point"/>');                   
                }
            }
        }
    });
    return false;
}

/*
 * Fonction qui trace la route du point1 au point 2
 */
function $tracerGraphe(){

    var i=1;
    var j=1;
    
    $effacerGraphe();

    $('.infoPoint').each( function(){
        
        var lat=tabpoint[$(this).attr("id")]["latitude"];
        var lon=tabpoint[$(this).attr("id")]["longitude"];
        
        j=1;
        
        $('.infoPoint').each( function(){
            
            if(j>i){
           
                var optDirection = {
                    depart :[tabpoint[$(this).attr("id")]["latitude"],tabpoint[$(this).attr("id")]["longitude"]],
                    arrive:[lat,lon],
                    type: "walk",
                    preverse: false,
                    draggable:false,
                    alternative:false,
                    custom : true,
                    func:maFonctionRetourDirection
                }
                addDirection(optDirection,"false");   
            }
            
            j++;
        });  
        
        i++;
    });
    
    return false;
}

/* 
 * 
 * Fonction de retour de addDirection
 */
function maFonctionRetourDirection(tab_etape){
    
    var option = {
        tab_etape : tab_etape               
    }
    traceAutoDirection(option);        
}

/* 
 * 
 * Fonction de création de parcours
 */
function $tracerParcours(depart,tempsMin,tempsMax,difficulte){
    
    $effacerGraphe();
    
    var intermediaire;
    var waypoints=new Array();
    var i=1;
    
    var latDep=tabpoint[depart]["latitude"];
    var longDep=tabpoint[depart]["longitude"];
      
    $('.infoPoint').each( function(){
        
        //        var lat=$(this).find('td').eq(1).html();
        //        var lon=$(this).find('td').eq(2).html();
        
        var lat=tabpoint[$(this).attr("id")]["latitude"];
        var lon=tabpoint[$(this).attr("id")]["longitude"];
        
        if(i<9 && (latDep!=lat || longDep!=lon)){
            intermediaire=new google.maps.LatLng(lat,lon);
            waypoints.push({
                location: intermediaire, 
                stopover: false
            });
        }
        i++;
    });   
    
    var optDirection = {
        depart :[latDep,longDep],
        arrive:[latDep,longDep],
        waypoints:waypoints,
        type: "walk",
        preverse: false,
        draggable:false,
        alternative:false,
        custom : true,
        func:maFonctionRetourDirection
    }
    
    addDirection(optDirection,"true",waypoints); 
}

/* 
 * 
 * Fonction qui permet d'efface les polylines de la carte
 */
function $effacerGraphe(){
    
    $('#map_canvas').gmap3({
        action: 'clear',
        name:'polyline'
    });
    return false;
}

function addDirection(obj,isWaypoint, waypoints){
    
    var dirRequest;
    
    if (obj.type == 'car') {
        type = google.maps.DirectionsTravelMode.DRIVING;
    } else if (obj.type == 'bike') {
        type = google.maps.DirectionsTravelMode.BICYCLING;
    } else if (obj.type == 'walk') {
        type = google.maps.DirectionsTravelMode.WALKING;
    } 
        
    if(obj.depart != "" && obj.arrive != ""){
                
        if(typeof(obj.depart) != "string"){
            obj.depart = new google.maps.LatLng(obj.depart[0], obj.depart[1]);

        }
                
        if(typeof(obj.arrive) != "string"){
            obj.arrive = new google.maps.LatLng(obj.arrive[0], obj.arrive[1]);

        }
        
        if(isWaypoint=="false"){
            
            dirRequest = {
                origin: obj.depart,
                destination: obj.arrive,
                travelMode: type,
                unitSystem: google.maps.DirectionsUnitSystem.METRIC,
                provideRouteAlternatives: obj.alternative
            };
        
        }else{
            
            dirRequest = {
                origin: obj.depart,
                destination: obj.arrive,
                draggable:obj.draggable,
                waypoints:waypoints,
                travelMode: type,
                unitSystem: google.maps.DirectionsUnitSystem.METRIC,
                provideRouteAlternatives: obj.alternative
            };
        }
                
        var indice = dirService.length;
        dirOptions[indice] = new Object();
        dirOptions[indice].div = obj.div;
        dirOptions[indice].custom = obj.custom;
        dirOptions[indice].routes = [];
        dirOptions[indice].func = obj.func;
                
        dirService[indice] =  new google.maps.DirectionsService();
        dirRenderer[indice] = new google.maps.DirectionsRenderer({
            'map': map,
            'preserveViewport': obj.preverse,
            'draggable': obj.draggable
        });
                
        dirService[indice].route(dirRequest, function(dirResult, dirStatus){
            showDirections(dirResult, dirStatus, indice, isWaypoint);
            if(isWaypoint=="true"){
                computeTotalDistance(dirResult);
            }
        });
                
        return indice;
    }
    return null;
}


function traceAutoDirection(option, graphique){
        
    var tab_etape = option.tab_etape;
        
    var itineraire = [];
    
    for(var i = 0; i < tab_etape.length ; i++){
       
        itineraire.push(tab_etape[i].startCoord);
        
        for(var y = 0; y < tab_etape[i].steps.length ; y++){
            for(var z = 0 ; z < tab_etape[i].steps[y].path.length; z++){
                itineraire.push(tab_etape[i].steps[y].path[z]);
            }                           
        }     
        itineraire.push(tab_etape[i].endCoord);                 
    }
                        
    addPolyline(itineraire);
    
    if(graphique=="true"){
        drawPath(itineraire);
    }

    return false;
}


function showDirections(dirResult, dirStatus,indice,graphique) {
   
    if (dirStatus != google.maps.DirectionsStatus.OK) {
        alert('Directions failed: ' + dirStatus);
        return;
    }

    for(var i = 0 ; i < dirResult.routes.length; i++){
        parseRoute(dirResult.routes[i].legs,indice,graphique);
    }
}

/* 
 * 
 * Fonction de conversion du vecteur route obtenu par l'api google map
 */
function parseRoute(route,indice,graphique){
    
    for(var i = 0 ; i < route.length ; i++){
        this.dirOptions[indice].routes[i] = new Object();
        this.dirOptions[indice].routes[i].duration = route[i].duration.value;
        this.dirOptions[indice].routes[i].distance = route[i].distance.value;
        this.dirOptions[indice].routes[i].start = route[i].start_address;
        this.dirOptions[indice].routes[i].end = route[i].end_address;
        this.dirOptions[indice].routes[i].startCoord = route[i].start_location;
        this.dirOptions[indice].routes[i].endCoord = route[i].end_location;
                
        this.parseStep(route[i].steps,indice,i);
    }
    
    var option = {
        tab_etape : this.dirOptions[indice].routes               
    }

    traceAutoDirection(option,graphique);   
    
}

/* 
 * 
 * Fonction de conversion du vecteur step obtenu par l'api google map
 */
function parseStep(steps,indice,indiceRoute){
        
    this.dirOptions[indice].routes[indiceRoute].steps = [];
    for(var i = 0 ; i < steps.length ; i++){
        this.dirOptions[indice].routes[indiceRoute].steps[i] = new Object();
        this.dirOptions[indice].routes[indiceRoute].steps[i].text = steps[i].instructions;
        this.dirOptions[indice].routes[indiceRoute].steps[i].distance = steps[i].distance.value;
        this.dirOptions[indice].routes[indiceRoute].steps[i].duration = steps[i].duration.value;
        this.dirOptions[indice].routes[indiceRoute].steps[i].startCoord = steps[i].start_location;
        this.dirOptions[indice].routes[indiceRoute].steps[i].endCoord = steps[i].end_location;
        this.dirOptions[indice].routes[indiceRoute].steps[i].path = steps[i].path;
                                
    }           
}

/* 
 * 
 * Fonction de tracer d'un polyline sur la carte
 */
function addPolyline(t_latLng){
    
    if(t_latLng.length > 0){ 
        
        $('#map_canvas').gmap3({
            action: 'addPolyline',
            options:{
                strokeColor: "#FF0000",
                strokeOpacity: 1.0,
                strokeWeight: 3
            },
            path:t_latLng,
            callback:function (polyline){
                
                var latDepart=Math.round(t_latLng[0].lat()*10000)/10000;
                var longDep=Math.round(t_latLng[0].lng()*10000)/10000;
                var latArrivee=Math.round(t_latLng[t_latLng.length-1].lat()*10000)/10000;
                var longArrivee=Math.round(t_latLng[t_latLng.length-1].lng()*10000)/10000;
               
                //Pour chaque point 
                $('.infoPoint').each( function(){
                            
                    var lat=Math.round(tabpoint[$(this).attr("id")]["latitude"])/10000;
                    var lon=Math.round(tabpoint[$(this).attr("id")]["longitude"])/10000;
                    var point=new google.maps.LatLng(lat,lon);
                    
                    //On verifie que l'itineraire ne passe pas par un autre point du parcours'
                    if(google.maps.geometry.poly.isLocationOnEdge(point, polyline, 0.0006)
                    
                        //Vérification que le point ne soit pas le point de depart ou d'arrive du parcours'
                        && lat!=latDepart && lon!=longDep && lat!=latArrivee && lon!=longArrivee
                        
                        //Verification que le point se situe entre la latitude de depart et d'arrivee    
                        //&& ((lat<latDepart && lat>latArrivee)||(lat>latDepart && lat<latArrivee))
                    
                    
                        ){
                        
         
                        polyline.setMap(null);
                        
                        alert("Depart: (" + t_latLng[0].lat() + "," + t_latLng[0].lng()+") Arrivee: (" + t_latLng[t_latLng.length-1].lat() + "," + t_latLng[t_latLng.length-1].lng()+")" + " Point: (" + lat + "," + lon+")")
                        return;
                    }
                    
                });
            },
            events:{ 
                rightclick:function(polyline,event){

                    // use menu as overlay
                    $("#map_canvas").gmap3({
                        action:'addOverlay',
                        latLng: event.latLng,
                        content: "bob"
                    });
                },
                
                //                Ajout d une infobulle sur la polyline
                click: function(polyline,event){       
                    $("#map_canvas").gmap3({
                        action:'addinfowindow',
                        latLng:event.latLng, 
                        infowindow:{
                            options:{
                                content: '<a href="#">Ajouter une activité</a>'
                            }
                        }
                    });    
                    
                    polyline.setOptions({
                        strokeColor: '#00008B'
                    }); 
                }
            }
        });
    }
    return false;
}

/* 
 * 
 * Fonction de tracer d'un graphique du denivelé d'un parcours
 */
function drawPath(itineraire) {

    // Create a new chart in the elevation_chart DIV.
    chart = new google.visualization.ColumnChart(document.getElementById('elevationGraf'));

    // Ask for 256 samples along that path.
    var pathRequest = {
        'path': itineraire,
        'samples': 256
    }

    // Initiate the path request.
    elevator.getElevationAlongPath(pathRequest, plotElevation);
}

// Takes an array of ElevationResult objects, draws the path on the map
// and plots the elevation profile on a Visualization API ColumnChart.
function plotElevation(results, status) {
        
    if (status == google.maps.ElevationStatus.OK) {
        
        var elevations = results;

        // Extract the elevation samples from the returned results
        // and store them in an array of LatLngs.
        var elevationPath = [];
        for (var i = 0; i < results.length; i++) {
            elevationPath.push(elevations[i].location);
        }
            
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Sample');
        data.addColumn('number', 'Elevation');
        
        for (var i = 0; i < results.length; i++) {
            data.addRow(['', elevations[i].elevation]);
        }

        // Draw the chart using the data within its DIV. 
        document.getElementById('elevationGraf').style.display = 'block';
        chart.draw(data, {
            legend: 'none',
            titleY: 'Elevation (m)'
        });
    } 
}

/* 
 * 
 * Fonction de calcul de la distance total d'un parcours
 */
function computeTotalDistance(result) {
        
    var totaldistance = 0;
    var totaltemps = 0;
    
    var myroute = result.routes[0];
    for (var i = 0; i < myroute.legs.length; i++) {
        totaldistance += myroute.legs[i].distance.value;
        totaltemps += myroute.legs[i].duration.value;
    }
    
    totaldistance = totaldistance / 1000.
    totaltemps= Math.floor(totaltemps/3600) + " h " + Math.floor((totaltemps/60)-(Math.floor(totaltemps/3600)*60)) + " min "+ Math.floor(totaltemps%60)+ " sec ";
 
    document.getElementById("distancetotal").innerHTML ="La distance total du trajet est de "+ totaldistance + " km";
    document.getElementById("tempstotal").innerHTML ="La durée estimée du trajet est de "+ totaltemps ;
}   


function $ajouterActivite($lat, $long){
    var nbQuestion = 0;
    var nbReponse = 0;
    var idQuestion = 1;
    var idReponse = 3;

    //Get the screen height and width
    var maskHeight = $(document).height();
    var maskWidth = $(window).width();

    //Set heigth and width to mask to fill up the whole screen
    $('#mask').css({
        'width':maskWidth,
        'height':maskHeight
    });

    //Effet de transition
    $('#mask').fadeIn(1000);
    $('#mask').fadeTo("slow",0.8);

    //Recuperation des dimensions de l'ecran'
    var winH = $(window).height();
    var winW = $(window).width();

    //Placement de la pop-up au centre
    $('#gestionActivite').css('top',  50);
    $('#gestionActivite').css('left', winW/2-$('#gestionActivite').width()/2);
    $('#gestionActivite').fadeIn(2000);
    
    $('body').css('z-index',-1);
    
    $("#addQ").click(function(){
        nbQuestion +=1;
        nbReponse +=3;
        idQuestion +=1;
        idReponse +=1;


        //Ajouter un nouveau formulaire pour proposer une nouvelle question
        $("#contenu").append("<div id='div"+idQuestion+"'><br /><div class='div'><label>Question</label><input type='checkbox' id='check"+idQuestion+"' value='' /><input type='text' name='question' id='question"+idQuestion+"' value='' required='required'/><br /></div><div class='div'><label>Propositions</label><br /></div>"+
            "<div id='radioQ'><div class='div'><label>1°)</label><input type='checkbox' name='1' value='' /><input type='text' name='reponse' id='reponse"+(idReponse+1)+"' value='' required='required'/><br /></div>"+
            "<div class='div'><label>2°)</label><input type='checkbox' name='2' value='' /><input type='text' name='reponse' id='reponse"+(idReponse+1)+"' value='' required='required'/><br /></div>"+
            "<div class='div'><label>3°)</label><input type='checkbox' name='3' value='' /><input type='text' name='reponse' id='reponse"+(idReponse+1)+"' value='' required='required'/><br /></div></div></div>");
   
    });

    $("#supprQ").click(function(){
        $("input:checkbox:checked").each(function(){
            var id = $(this).parent().parent().attr("id");
            $('#'+id).remove();
        });
    });
    
    $("#gestionA").submit(function(){
        
        //recuperation de l'id du site
        var idSite = id;
        
        //grace a la latitude et la longitude on recupere l'id ddu point
        $.ajax({
            type: 'POST',
            url: 'gestionActivite.php',
            data:"action=recupIDPoint&idSite="+$idSite+"&latitude="+$lat+"&longitude="+$lng,
            success: function(data, textStatus, jqXHR) {
                //alert(data);
                
            },
            error: function(jqXHR, textStatus, errorThrown) {
            }
        });
        
        
        
        
        
        
        
        
        //verifier que au moins une bonne réponse est indique par groupe de reponse
        $('input[id$=submitQuizz]').click(function(e) {
            var checked = $('input:checkbox:checked').length;
            if (checked == 0) {
                alert('Vous devez au moins choisir une bonne réponse par question');
                e.preventDefault();
            }
        });
        return false;
    });
    
}